home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 271_02 / gameport.doc < prev    next >
Text File  |  1987-08-14  |  3KB  |  76 lines

  1.  
  2.  
  3.         NAME
  4.                 gameport functions -- manipulate game port
  5.  
  6.         SYNOPSIS
  7.                 (void)init_game(mode);    initialize and set mode
  8.                 (void)clear_game();       clear pending input
  9.                 r = get_press();          get waiting keypress
  10.                 (void)debounce();         input debouncer
  11.                 int mode;                 single/multi stroke mode
  12.                 unsigned char r;          key value
  13.  
  14.  
  15.         DESCRIPTION
  16.         This series of functions is used to read and debounce the
  17.         four switch inputs on the joystick input port.  The
  18.         analog joystick inputs are not supported.
  19.         init_game() is called to setup the processor.  If its
  20.         argument is TRUE, then multiple key inputs are allowed.
  21.         If FALSE, any multiple key closure will be locked out.
  22.         debounce() must be called periodically in order to
  23.         debounce and process the switch inputs.  It is suggested
  24.         that debounce() be called about 75 to 100 times per second.
  25.         The structure "gamesw" contains information used by
  26.         these routines.  The number of times debounce must be invoked
  27.         to return a valid input is contained in gamesw.seed, and may
  28.         be altered as desired.
  29.         get_press() is called to return any fully debounced input.
  30.         A value of 0 indicates no input available.
  31.         Calling clear_game() clears any pending input and forces
  32.         the debouncer to assume a new input sequence.
  33.  
  34.         The game port was originally intended for playing games via
  35.         an arcade-style joystick.  However, for the serious engineer,
  36.         this port is an excellent "quick and dirty" 4 bit TTL level
  37.         input port.  It may be used for reading external switches,
  38.         sensors, etc.
  39.  
  40.         Switch values are returned as an 8 bit value, with only the
  41.         lowest 4 bits in use.  A set bit indicates a closed switch.
  42.         If multiple keystrokes are not allowed, then get_press() will
  43.         return 0, 1, 2, 4, or 8.  If multiples are allowed, then
  44.         all values 0-15 (0-0x0f) may be returned.
  45.  
  46.            bit position            pin number on connector
  47.                0                            2
  48.                1                            7
  49.                2                            14
  50.                3                            10
  51.  
  52.      gameport functions    page 2
  53.  
  54.         EXAMPLE
  55.  
  56.             main() {
  57.                unsigned char i;
  58.                init_game(FALSE);    /* allow only single switch inputs */
  59.                for ever() {
  60.                   debounce();       /* call this regularly */
  61.                   i = get_press();
  62.                   if(i is 0) continue;
  63.                   printf("switch value is %x\n", i);
  64.                   }
  65.                }
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.         This function is found in SMTCx.LIB for the Turbo C Compiler
  76.